import pandas as pd
import numpy as np

# 积极评论的模板
positive_templates = [
    "这个{item} really{adj}!",
    "超级喜欢这个{item}，{adj}极了",
    "太{adj}了，推荐大家都来试试",
    "这{item}简直太{adj}了，给满分！",
    "好{adj}啊，下次还会再来的",
    # 新增模板
    "{item}的{adj}程度超出预期！",
    "不说这个{item}真的{adj}呢",
    "第一次见到这么{adj}的{item}",
    "用了这么久，还是觉得很{adj}",
    "朋友推荐的{item}果然很{adj}",
    "这{item}给我惊喜，太{adj}了",
    "完全没想到{item}能这么{adj}",
    "必须给这个{adj}的{item}点赞",
    "终于找到这么{adj}的{item}了",
    "强烈推荐这个{adj}的{item}！"
]

# 消极评论的模板
negative_templates = [
    "这个{item}实在太{adj}了",
    "非常不满意，{adj}到极点",
    "太{adj}了，不推荐",
    "这{item} really{adj}!",
    "非常不满意，{adj}到极点",
    "太{adj}了，不推荐",
    "这{item}真的很{adj}，浪费钱",
    "特别{adj}，不会再来了",
    # 新增模板
    "从来没见过这么{adj}的{item}",
    "真是后悔买了这个{adj}的{item}",
    "这{item}简直是我见过最{adj}的",
    "完全不推荐，太{adj}了",
    "这{item}让人很{adj}，不会再选择了",
    "花钱买了个{adj}的{item}",
    "真心觉得这个{item}很{adj}",
    "不要浪费时间在这个{adj}的{item}上",
    "第一次遇到这么{adj}的{item}",
    "对这个{adj}的{item}无语了"
]

# 积极词汇
positive_items = [
    "产品", "服务", "体验", "效果", "质量",
    # 新增词汇
    "设计", "功能", "性能", "界面", "操作",
    "系统", "应用", "软件", "平台", "工具"
]

positive_adjs = [
    "好", "棒", "出色", "完美", "优秀", "满意",
    # 新增词汇
    "惊艳", "强大", "给力", "实用", "贴心",
    "流畅", "稳定", "高效", "专业", "创新"
]

# 消极词汇
negative_items = [
    "产品", "服务", "体验", "效果", "质量",
    # 新增词汇
    "设计", "功能", "性能", "界面", "操作",
    "系统", "应用", "软件", "平台", "工具"
]

negative_adjs = [
    "差", "糟糕", "失望", "垃圾", "难用", "不满意",
    # 新增词汇
    "卡顿", "混乱", "繁琐", "bug多", "不稳定",
    "坑爹", "无语", "浪费", "敷衍", "过时"
]

# 积极评论的模板
positive_templates.extend([
    "每次用这个{item}都觉得很{adj}",
    "这是我用过最{adj}的{item}了",
    "不愧是高评分的{item}，真的很{adj}",
    "朋友们都说这个{item}很{adj}，果然没错",
    "买来一个月了，{item}依然很{adj}",
    "这个价位能买到这么{adj}的{item}很值",
    "用了这么久的{item}，一直都很{adj}",
    "真心觉得这个{item}非常{adj}",
    "第一次遇到这么{adj}的{item}，好评",
    "回购过好几次了，{item} really{adj}"
])

# 消极评论的模板
negative_templates.extend([
    "用了一个星期，{item}越来越{adj}",
    "这么贵的{item}居然这么{adj}",
    "退货了，这个{item}太{adj}",
    "不知道为什么这个{item}这么{adj}",
    "很后悔买了这个{adj}的{item}",
    "同事都说这个{item}很{adj}，劝我别买",
    "客服态度也很{adj}，和{item}一样",
    "这个价位的{item}竟然这么{adj}",
    "完全无法理解为什么{item}这么{adj}",
    "本来期待很高，结果{item}特别{adj}"
])

# 积极词汇
positive_items.extend([
    "界面设计", "用户体验", "功能设计", "系统性能", "运行速度",
    "技术支持", "更新内容", "系统稳定性", "操作流程", "使用方式"
])

positive_adjs.extend([
    "人性化", "直观", "省心", "靠谱", "实用",
    "智能", "创新", "便捷", "可靠", "先进"
])

# 消极词汇
negative_items.extend([
    "界面设计", "用户体验", "功能设计", "系统性能", "运行速度",
    "技术支持", "更新内容", "系统稳定性", "操作流程", "使用方式"
])

negative_adjs.extend([
    "不合理", "反人类", "费时", "不靠谱", "鸡肋",
    "过时", "死板", "繁琐", "不稳定", "落后"
])

# 添加表情符号和标点变化
def add_emoji_and_punctuation(text, is_positive):
    # 积极表情
    positive_emojis = ['[赞]', '[好评]', '[心]', '[很棒]', '[笑]', '[强]']
    # 消极表情
    negative_emojis = ['[差评]', '[怒]', '[无语]', '[摊手]', '[黑脸]', '[弱]']
    
    # 标点变化
    punctuations = ['！', '！！', '！！！', '...', '。。。']
    
    # 随机添加表情和标点
    emojis = positive_emojis if is_positive else negative_emojis
    if np.random.random() < 0.7:  # 70%的概率添加表情
        text += ' ' + np.random.choice(emojis)
    if np.random.random() < 0.5:  # 50%的概率改变标点
        text = text.rstrip('！。') + np.random.choice(punctuations)
    
    return text

# 修改生成评论的函数
def generate_review(is_positive):
    templates = positive_templates if is_positive else negative_templates
    items = positive_items if is_positive else negative_items
    adjs = positive_adjs if is_positive else negative_adjs
    
    template = np.random.choice(templates)
    item = np.random.choice(items)
    adj = np.random.choice(adjs)
    
    review = template.format(item=item, adj=adj)
    # review = add_emoji_and_punctuation(review, is_positive)
    
    return review

# 生成1000条评论数据
num_samples = 1000
reviews = []
labels = []

# 生成500条积极评论
for _ in range(num_samples // 2):
    reviews.append(generate_review(True))
    labels.append(1)

# 生成500条消极评论
for _ in range(num_samples // 2):
    reviews.append(generate_review(False))
    labels.append(0)

# 创建DataFrame并随机打乱数据
df = pd.DataFrame({
    'review': reviews,
    'label': labels
})
df = df.sample(frac=1).reset_index(drop=True)

# 保存到CSV文件
df.to_csv('data/test_generated.csv', index=False, encoding='utf-8')
print(f"已生成{len(df)}条测试数据，并保存到 data/test_generated.csv")